package com.zzj.ecology.system.service.system;

import com.zzj.ecology.system.bean.system.SysMenu;
import com.zzj.ecology.system.dto.HttpResult;
import com.zzj.ecology.system.domain.Page;
import com.zzj.ecology.system.bean.vo.dtree.DTreeResponse;

import java.util.List;

public interface SysMenuService {

    /**
     * 用户登录后, 获取到用户相应的菜单 菜单delete_status='0'(菜单存在)
     * @param username
     * @return
     */
    List<SysMenu> findOkTabMenuListByUsername(String username);

    /**
     * 查询非按钮 下拉框 数据,用于列表中展示上级菜单下拉框
     * @return
     */
    List<SysMenu> findNonButtonSelectBoxList();

    /**
     * laytable 分页查询数据
     * @param page
     * @return
     */
    HttpResult findPageList(Page page);

    /**
     * 创建 一条 新的菜单记录, 并 分配初始授权
     * @param menu
     * @return
     */
    HttpResult createAndGrant(SysMenu menu);

    /**
     * 1) 修改 菜单 普通信息
     * 2) 修改 菜单 权限信息
     * @param menu
     * @return
     */
    HttpResult updateAndGrant(SysMenu menu);

    /**
     * 2) 修改 菜单 权限
     * @param menu
     * @return
     */
    HttpResult rePerms(SysMenu menu);

    /**
     * 查询当前用户的所有按钮权限信息
     * @param username
     * @return
     */
    List<String> findUserMenuPermsByUsername(String username);

    /**
     * 批量删除菜单数据 ,标记删除,即修改 delete_status = '0' 状态位改成 '1', 记录修改人和修改时间.
     * @param menuids
     * @param username
     * @return
     */
    HttpResult updateDeleteStatusByIds(List<Integer> menuids, String username);

    /**
     * 查询所有未标识删除的 菜单树,delete_status = '0'的状态,基础数据 id, pid 数据
     * @return
     */
    DTreeResponse dtree();

    /**
     * 菜单管理页面中,展示用页面.查询到的是delete_status='0'(未删)数据的基础数据
     * @return
     */
    HttpResult treeTable();
}
